/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Grafico;

import Objetos.*;
import Personajes.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

/**
 *
 * @author shadow
 */
public class Ventana_recogerArma extends JDialog {

    private javax.swing.JLabel titulo;
    private JButton botonAceptar;
    private JButton botonCancelar;
    private JComboBox comboTipo;
    private int cantArmas;
    private int cantArmaduras;
    private Ejercito ej;
    private Batallon bat;
    private boolean noComprando;
    private JFrame duenho;
    private ArrayList<JSpinner> valoresTipo = new ArrayList<JSpinner>();
    private ArrayList<JLabel> labelTipo = new ArrayList<JLabel>();
    private ArrayList<Integer> listaTipo = new ArrayList<Integer>();
    private ArrayList<Integer> cantxTipo = new ArrayList<Integer>();
    private ArrayList<ArrayList<Integer>> armas;

    public Ventana_recogerArma(JFrame owner, boolean esModal, ArrayList<ArrayList<Integer>> armas, Batallon bat, Ejercito ej, boolean noComprando) {
        super(owner, esModal);
        getContentPane().setLayout(null);
        this.noComprando = noComprando;
        this.duenho = owner;
        this.armas = armas;
        this.ej = ej;
        this.bat = bat;
        titulo = new JLabel();
        botonCancelar = new JButton();
        botonAceptar = new JButton();
        titulo.setFont(new Font("Arial", 0, 16)); // NOI18N
        titulo.setText("¿Que armas desea recoger?");
        titulo.setBounds(70, 9, 250, 33);
        getContentPane().add(titulo);
        valoresTipo = new ArrayList<JSpinner>();
        labelTipo = new ArrayList<JLabel>();
        listaTipo = new ArrayList<Integer>();
        cantxTipo = new ArrayList<Integer>();
        int aux = 0;
        for (int i = 0; i < armas.get(0).size(); i++) {
            if (listaTipo.contains(armas.get(0).get(i))) {
                int index = listaTipo.indexOf(armas.get(0).get(i));
                cantxTipo.set(index, cantxTipo.get(index) + 1);
            } else {
                listaTipo.add(armas.get(0).get(i));
                cantxTipo.add(1);
                JLabel detArma = new JLabel();
                JSpinner numArma = new JSpinner();
                valoresTipo.add(numArma);
                labelTipo.add(detArma);
                detArma.setText(Armeria.getArma(armas.get(0).get(i)).getNombre());
                detArma.setToolTipText(Armeria.getArma(armas.get(0).get(i)).getDescripcion());
                getContentPane().add(detArma);
                detArma.setBounds(10, 50 + aux * 30, 180, 14);
                getContentPane().add(numArma);
                numArma.setBounds(272, 50 + aux * 30, 53, 20);
                aux++;
//                detArma.addMouseListener(new MouseAdapter(){
//
//                    @Override
//                    public void mouseEntered(MouseEvent e) {
//                        JLabel label = (JLabel)e.getSource();
//                        label.gettoo
//                    }
//                    
//                });
            }
        }
        cantArmas = aux;
        for (int i = 0; i < armas.get(1).size(); i++) {
            if (listaTipo.contains(armas.get(1).get(i))) {
                int index = listaTipo.indexOf(armas.get(1).get(i));
                cantxTipo.set(index, cantxTipo.get(index) + 1);
            } else {
                listaTipo.add(armas.get(1).get(i));
                cantxTipo.add(1);
                JLabel detArma = new JLabel();
                JSpinner numArma = new JSpinner();
                valoresTipo.add(numArma);
                labelTipo.add(detArma);
                detArma.setText(Armeria.getArma(armas.get(1).get(i)).getNombre());
                detArma.setToolTipText(Armeria.getArma(armas.get(1).get(i)).getDescripcion());
                getContentPane().add(detArma);
                detArma.setBounds(10, 50 + aux * 30, 180, 14);
                getContentPane().add(numArma);
                numArma.setBounds(272, 50 + aux * 30, 53, 20);
                aux++;
            }
        }
        cantArmaduras = aux - cantArmas;
        JLabel etiqueta = new JLabel();
        etiqueta.setText("A que tipo quiere darle enfasis:");
        etiqueta.setBounds(10, 50 + aux * 30, 180, 14);
        getContentPane().add(etiqueta);
        comboTipo = new JComboBox();
        comboTipo.setModel(new DefaultComboBoxModel(new String[]{"OFENIVAS", "DEFENSIVAS"}));
        comboTipo.setBounds(232, 50 + aux * 30, 93, 20);
        getContentPane().add(comboTipo);
        botonAceptar.setText("Aceptar");
        getContentPane().add(botonAceptar);
        botonAceptar.setBounds(50, 50 + 30 * (aux + 1) + 20, 100, 23);
        botonAceptar.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                ArrayList<Integer> armasAux = new ArrayList<Integer>();
                ArrayList<Integer> armadurasAux = new ArrayList<Integer>();
                for (int i = 0; i < Ventana_recogerArma.this.cantArmas; i++) {
                    for (int j = 0; j < Integer.parseInt(Ventana_recogerArma.this.valoresTipo.get(i).getValue().toString()); j++) {
                        armasAux.add(Ventana_recogerArma.this.listaTipo.get(i));
                        Ventana_recogerArma.this.armas.get(0).remove(Ventana_recogerArma.this.listaTipo.get(i));
                    }
                }
                for (int i = 0; i < Ventana_recogerArma.this.cantArmaduras; i++) {
                    for (int j = 0; j < Integer.parseInt(Ventana_recogerArma.this.valoresTipo.get(i + cantArmas).getValue().toString()); j++) {
                        armadurasAux.add(Ventana_recogerArma.this.listaTipo.get(i + cantArmas));
                        Ventana_recogerArma.this.armas.get(0).remove(Ventana_recogerArma.this.listaTipo.get(i + cantArmas));
                    }
                }
                if (Ventana_recogerArma.this.noComprando || (Ventana_recogerArma.this.bat.obtener_valor_armas(armasAux) + Ventana_recogerArma.this.bat.obtener_valor_armas(armadurasAux) <= Ventana_recogerArma.this.ej.dinero_total)) {
                    if (Ventana_recogerArma.this.bat.obtener_valor_armas(armasAux) + Ventana_recogerArma.this.bat.obtener_valor_armas(armadurasAux) == 0) {
                        JOptionPane.showMessageDialog(null, "Ingrese una cantidad");
                        return;
                    }
                    Ventana_recogerArma.this.ej.dinero_total += Ventana_recogerArma.this.bat.recoger_arma(armasAux, armadurasAux, Ventana_recogerArma.this.comboTipo.getSelectedIndex());
                    Ventana_recogerArma.this.dispose();
                } else {
                    JOptionPane.showMessageDialog(null, "Dinero insuficiente");
                    Ventana_recogerArma.this.armas.get(0).addAll(armasAux);
                    Ventana_recogerArma.this.armas.get(1).addAll(armadurasAux);
                }
            }
        });

        botonCancelar.setText("Cancelar");
        getContentPane().add(botonCancelar);
        botonCancelar.setBounds(200, 50 + 30 * (aux + 1) + 20, 100, 23);
        botonCancelar.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                Ventana_recogerArma.this.dispose();
            }
        });
        for (int i = 0; i < aux; i++) {
            SpinnerNumberModel model = new SpinnerNumberModel();
            model.setMaximum(cantxTipo.get(i));
            model.setMinimum(0);
            valoresTipo.get(i).setModel(model);
            valoresTipo.get(i).setValue(cantxTipo.get(i));
            labelTipo.get(i).setText(labelTipo.get(i).getText() + " (" + cantxTipo.get(i) + ")");
        }
        this.setTitle("Recogiendo Armas...");
        this.setSize(360, 250 + 30 * (aux -2));
        this.setResizable(false);
        this.setVisible(true);
    }
}
